# -*- coding: utf-8 -*-
# Python中默认的编码格式是 ASCII 格式，在没修改编码格式时无法正确打印汉字，所以在读取中文时会报错。

# list是一个可变的有序表，所以，可以往list中追加元素到末尾，元素可以相同
# 列表list相当于 arraylist 可以存放不同的元素
# list元素也可以是另一个list

# list里面的元素的数据类型也可以不同
list1 = ['physics', 'chemistry', 1997, 2000]
list2 = [1, 2, 3, 4, 5, 6, 7]
s = str(list1)
print("1"+s)
res1 = list()


print ("list1[0]: ", list1[0])
print ("list2[1:5]: ", list2[1:5])          # 获取list[1-4]
print("list1[:2]",list1[:2])                # 获取前两个元素 list[0-1]
print("list1[1:]",list1[1:])                # 获取除第一个元素外的所有元素
print("list1[-1]",list1[-1])                # 获取最后一个元素
print("list1[::-1]", list1[::-1])           # 反向获取
print("list1[::1]", list1[::2])             # 正向获取 除以2，向上取整
print("list1[1::-1]", list1[2::-1])         # 获取前3个元素 进行反向

# 冒号在中间，截取一端
# 冒号在左边  取从0到坐标的前几个
# 冒号在右边  取从坐标到末尾
# 双冒号是除以  -1反向获取 2是每个2个获取


# python的一个惯例，如果一个函数对对象进行的时就地改动，那么它就返回None，
# 好让调用者知道传入的参数发生了变动，而且并未产生新的对象，sort就是。
# 例如，random,shuffle函数也遵守了这个惯例
li = [3, 4, 5, 67, 8, 10]

print(li[1])
# s1 = li.sort()              # 返回None
# print(s1)
print(li)
li.sort()
print(li)

li = [3, 4, 5, 67, 8, 10]
s2 = sorted(li)             # sorted 返回正常
print(s2)


# list的方法：增加和删除append、insert、pop、remove
# append list.append() 末尾添加
# insert list.insert(索引,'插入的值')

# pop 使用方法pop()删除元素,删除最后一项,并可获取删除的值
# pop_motorcycles = motorcycles.pop();//删除的值
# 如果是pop(0),那就是第一个元素

# remove()根据值删除元素
# 方法remove()只删除第一个指定的值。如果要删除的值可能在列表中出现多次，就需要使用循环来判断是否删除了所有这样的值

# list可以相加
print([2]+[3])           # [2,3]

# index() 函数用于从列表中找出某个值第一个匹配项的索引位置。
# aList = [123, 'xyz', 'runoob', 'abc']
# print "xyz 索引位置: ", aList.index( 'xyz' )
# print "runoob 索引位置 : ", aList.index( 'runoob', 1, 3 )
# xyz 索引位置:  1
# runoob 索引位置 :  2


